package com.cyz.web.app.leetcode.plusOne;

import java.util.Arrays;

public class Client {


    /**
     * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
     * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
     * 你可以假设除了整数 0 之外，这个整数不会以零开头。
     *
     * @param digits
     * @return
     */
    public int[] plusOne(int[] digits) {

        int len = digits.length - 1;
        int carry = 1;
        int mul = 10;
        boolean ifCapacity = false;
        for (int i = len; i >= 0; i--) {
                int sum = digits[i] + carry;
                int j = sum % mul;
                digits[i] = j;
                if (j !=0) {
                    carry = 0;
                }

                if (i==0 && j==0){
                    ifCapacity = true;
                }
        }

        if (ifCapacity){
            int[] res = new int[len+2];
            res[0] = 1;
            for (int i=1;i< res.length;i++){
                res[i] = digits[i-1];
            }
            return res;
        }
        return digits;
    }

    public static void main(String[] args) {
        Client c = new Client();
        int[] digits = new int[]{9,9,9,9};
        int[] ints = c.plusOne(digits);
        System.out.println(Arrays.toString(ints));


    }

}
